# coding=utf-8
"""
Author: Mr.夏末
@Function: 装饰器应用
"""
import time


def mytime(func):
    def wrapper(*args, **kwargs):
        # 被装饰函数执行前
        t1 = time.time()
        # 被装饰函数执行
        res = func(*args, **kwargs)
        # 被装饰函数执行后
        t2 = time.time()
        print(func.__name__, '执行耗时：', round(t2 - t1, 3))
        return res

    return wrapper


def mytime_new(t='ms'):
    """
    三层装饰器最外层接收装饰器本身的参数
    :param t: 时间单位
    """

    def mytime(func):
        def wrapper(*args, **kwargs):
            # 被装饰函数执行前
            t1 = time.time()
            # 被装饰函数执行
            res = func(*args, **kwargs)
            # 被装饰函数执行后
            t2 = time.time()
            if t == 'ms':
                print(func.__name__, '执行耗时：', round(t2 - t1, 3), t)
            elif t == 's':
                print(func.__name__, '执行耗时：', int(t2 - t1), t)
            else:
                print(func.__name__, '执行耗时：', round((t2 - t1) * 1000, 3), t)
            return res

        return wrapper

    # 将return执行第二层函数，不要带括号
    return mytime
